export default {
  mounted(el: any, binding: any) {
    const {
      value: { loadMore, options = {} }
    } = binding;
    if (!loadMore || typeof loadMore !== "function") {
      console.error("无限滚动指令需要一个加载更多的函数");
      return;
    }
    el.observer = new IntersectionObserver(
      (entries) => {
        entries.forEach((entry) => {
          if (entry.isIntersecting) {
            loadMore();
            // 假设loadMore返回的是一个Promise，加载完成后可能需要重新观察或停止观察
            // 这里我们假设不再需要重新观察，因为数据已经加载
            // el.observer.unobserve(entry.target);
          }
        });
      },
      {
        root: options.root || null,
        rootMargin: "0px 0px 0px 0px", //距离可视区的多远触发
        threshold: 1 //0没有交叉，1完全交叉
      }
    );
    el.observer.observe(el);
  },
  unmounted(el: any) {
    el.observer.disconnect();
  }
};
